home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992…tember: A ROM With a View / devSep92 / devSep92.dmg / Technical Documentation / Sample Code / Snippets / Graphics & Printing / QuickDraw / Icon Displayƒ / icldrawer.sit / bullMenus.c next >
Encoding:
C/C++ Source or Header  |  1990-07-24  |  3.0 KB  |  160 lines  |  [TEXT/KAHL]

  1. #include "QuickDraw32Bit.h"
  2. /*****
  3.  * bullMenus.c
  4.  *
  5.  *    Routines for Bullseye demo menus.
  6.  *
  7.  *****/
  8.  
  9. extern    WindowPtr bullseyeWindow;
  10. extern    int    width;
  11. extern  GWorldPtr    GgwPtr;
  12.  
  13.  
  14. MenuHandle    appleMenu, fileMenu, editMenu, widthMenu;
  15.  
  16. enum    {
  17.     appleID = 1,
  18.     fileID,
  19.     editID,
  20.     widthID
  21.     };
  22.  
  23. enum    {
  24.     openItem = 1,
  25.     closeItem,
  26.     quitItem = 4
  27.     };
  28.  
  29. /****
  30.  * SetUpMenus()
  31.  *
  32.  *    Set up the menus. Normally, we’d use a resource file, but
  33.  *    for this example we’ll supply “hardwired” strings.
  34.  *
  35.  ****/
  36.  
  37. SetUpMenus()
  38.  
  39. {
  40.     InsertMenu(appleMenu = NewMenu(appleID, "\p\024"), 0);
  41.     InsertMenu(fileMenu = NewMenu(fileID, "\pFile"), 0);
  42.     InsertMenu(editMenu = NewMenu(editID, "\pEdit"), 0);
  43.     InsertMenu(widthMenu = NewMenu(widthID, "\pWidth"), 0);
  44.     DrawMenuBar();
  45.     AddResMenu(appleMenu, 'DRVR');
  46.     AppendMenu(fileMenu, "\pOpen/O;Close/W;(-;Quit/Q");
  47.     AppendMenu(editMenu, "\pUndo/Z;(-;Cut/X;Copy/C;Paste/V;Clear");
  48.     AppendMenu(widthMenu, "\p1/1;2/2;3/3;4/4;5/5;6/6;7/7;8/8;9/9;10/0;11;12");
  49. }
  50. /* end SetUpMenus */
  51.  
  52.  
  53. /****
  54.  *  AdjustMenus()
  55.  *
  56.  *    Enable or disable the items in the Edit menu if a DA window
  57.  *    comes up or goes away. Our application doesn't do anything with
  58.  *    the Edit menu.
  59.  *
  60.  ****/
  61.  
  62. AdjustMenus()
  63. {
  64.     register WindowPeek wp = (WindowPeek) FrontWindow();
  65.     short kind = wp ? wp->windowKind : 0;
  66.     Boolean DA = kind < 0;
  67.     
  68.     enable(editMenu, 1, DA);
  69.     enable(editMenu, 3, DA);
  70.     enable(editMenu, 4, DA);
  71.     enable(editMenu, 5, DA);
  72.     enable(editMenu, 6, DA);
  73.     
  74.     enable(fileMenu, openItem, !((WindowPeek) bullseyeWindow)->visible);
  75.     enable(fileMenu, closeItem, DA || ((WindowPeek) bullseyeWindow)->visible);
  76.  
  77.     CheckItem(widthMenu, width, true);
  78. }
  79.  
  80.  
  81. static
  82. enable(menu, item, ok)
  83. Handle menu;
  84. {
  85.     if (ok)
  86.         EnableItem(menu, item);
  87.     else
  88.         DisableItem(menu, item);
  89. }
  90.  
  91.  
  92. /*****
  93.  * HandleMenu(mSelect)
  94.  *
  95.  *    Handle the menu selection. mSelect is what MenuSelect() and
  96.  *    MenuKey() return: the high word is the menu ID, the low word
  97.  *    is the menu item
  98.  *
  99.  *****/
  100.  
  101. HandleMenu (mSelect)
  102.  
  103.     long    mSelect;
  104.  
  105. {
  106.     int            menuID = HiWord(mSelect);
  107.     int            menuItem = LoWord(mSelect);
  108.     Str255        name;
  109.     GrafPtr        savePort;
  110.     WindowPeek    frontWindow;
  111.     
  112.     switch (menuID)
  113.       {
  114.       case    appleID:
  115.         GetPort(&savePort);
  116.         GetItem(appleMenu, menuItem, name);
  117.         OpenDeskAcc(name);
  118.         SetPort(savePort);
  119.         break;
  120.     
  121.       case    fileID:
  122.         switch (menuItem)
  123.           {
  124.           case    openItem:
  125.             ShowWindow(bullseyeWindow);
  126.             SelectWindow(bullseyeWindow);
  127.             break;
  128.                                 
  129.           case    closeItem:
  130.             if ((frontWindow = (WindowPeek) FrontWindow()) == 0L)
  131.               break;
  132.               
  133.             if (frontWindow->windowKind < 0)
  134.               CloseDeskAcc(frontWindow->windowKind);
  135.             else if (frontWindow = (WindowPeek) bullseyeWindow)
  136.               HideWindow(bullseyeWindow);
  137.                         break;
  138.                         
  139.           case    quitItem:
  140.               DisposeGWorld(GgwPtr);
  141.             ExitToShell();
  142.             break;
  143.           }
  144.         break;
  145.                   
  146.       case    editID:
  147.         if (!SystemEdit(menuItem-1))
  148.           SysBeep(5);
  149.         break;
  150.         
  151.       case    widthID:
  152.         CheckItem(widthMenu, width, false);
  153.         width = menuItem;
  154.         InvalRect(&bullseyeWindow->portRect);
  155.         break;
  156.       }
  157. }
  158. /* end HandleMenu */
  159.  
  160.